Reverse Engineering Makes You A Better Programmer